package com.c2b.algorithm.leetcode.base;

/**
 * <a href="https://leetcode.cn/problems/count-the-digits-that-divide-a-number/description/">统计能整除数字的位数(Count the Digits That Divide a Number)</a>
 * <p>给你一个整数 num ，返回 num 中能整除 num 的数位的数目。</p>
 * <p>如果满足 nums % val == 0 ，则认为整数 val 可以整除 nums 。</p>
 * <p>
 * <b>示例：</b>
 * <pre>
 * 示例 1：
 *      输入：num = 7
 *      输出：1
 *      解释：7 被自己整除，因此答案是 1 。
 *          7 % 7 = 0
 *
 * 示例 2：
 *      输入：num = 121
 *      输出：2
 *      解释：121 可以被 1 整除，但无法被 2 整除。由于 1 出现两次，所以返回 2 。
 *          121 % 1 = 0
 *          121 % 2 = 1
 *          121 % 1 = 0
 *
 * 示例 3：
 *      输入：num = 1248
 *      输出：4
 *      解释：1248 可以被它每一位上的数字整除，因此答案是 4 。
 *          1248 % 1 = 0
 *          1248 % 2 = 0
 *          1248 % 4 = 0
 *          1248 % 8 = 0
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 *     <ul>
 *         <li>1 <= num <= 10^9</li>
 *         <li>num 的数位中不含 0</li>
 *     </ul>
 * </p>
 *
 * @author c2b
 * @since 2023/10/26 13:31
 */
public class LC2520CountTheDigitsThatDivideANumber_S {

    static class Solution {
        public int countDigits(int num) {
            int ret = 0;
            int temp = num;
            while (temp != 0) {
                if (num % (temp % 10) == 0) {
                    ret++;
                }
                temp /= 10;
            }
            return ret;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.countDigits(7));
        System.out.println(solution.countDigits(121));
        System.out.println(solution.countDigits(1248));
    }
}
